package SlidingWindow;


/**
 * @ClassName LC209
 * @Description 长度最小的子数组
 * @Author ZJX
 * @Date 2024/9/19 9:22
 * @Version 1.0
 */
public class LC209 {
    public int lengthOfLongestSubstring(String s) {
        int[] charCount = new int[128]; // 用于记录字符出现的次数    ASCII 字符集总共有 128 个字符
        int left = 0, maxLength = 0; // 窗口的左边界和最大长度

        // 使用for循环来处理右边界的遍历
        for (int right = 0; right < s.length(); right++) {
          char ch = s.charAt(right);
          charCount[ch]++;

          while(charCount[ch] > 1){
              char leftChar = s.charAt(left);
              charCount[leftChar]--;
              left++;
          }

          maxLength = Math.max(maxLength,right - left + 1);
        }

        return maxLength; // 返回最长的无重复字符子串长度
    }
}
